package com.org.controller.pc;

import com.org.DTO.CollectItemsDTO;
import com.org.DTO.PageDTO;
import com.org.entity.CollectItems;
import com.org.message.BaseMessage;
import com.org.result.Result;
import com.org.service.CollectItemsService;
import com.org.vo.PageResult;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

/**
 * 失物招领控制器
 */
@RestController
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/pc/collectItems")
public class CollectItemsController {

    private final CollectItemsService collectItemsService;

    /**
     * 分页查询指定区域的所有失物招领信息
     * @param pageDTO
     * @return
     */
    @GetMapping("/pageFindAll")
    public Result<PageResult> findAllPage(PageDTO pageDTO) {
        return Result.success(collectItemsService.findAllPage(pageDTO));
    }

    /**
     * 添加失物招领信息
     * @param collectItemsDTO
     * @return
     */
    @PostMapping("/add")
    public Result<String> addCollectItems(@RequestBody CollectItemsDTO collectItemsDTO) {
        log.info("添加的失物招领信息：{}", collectItemsDTO);
        collectItemsService.addCollectItems(collectItemsDTO);
        return Result.success("添加成功");
    }

    /**
     * 根据Id查询失物招领信息
     * @param id
     * @return
     */
    @GetMapping("/findCollectItemsById/{id}")
    public Result<CollectItems> findCollectItemsById(@PathVariable Long id) {
        log.info("查询的失物招领信息ID：{}", id);
        return Result.success(collectItemsService.findCollectItemsById(id));
    }

    /**
     * 修改失物招领信息
     * @param collectItemsDTO
     * @return
     */
    @PutMapping("/update")
    public Result<String> updateCollectItems(@RequestBody CollectItemsDTO collectItemsDTO) {
        log.info("修改的失物招领信息：{}", collectItemsDTO);
        collectItemsService.updateCollectItems(collectItemsDTO);
        return Result.success("修改成功");
    }

    /**
     * 删除失物招领信息
     * @param id
     * @return
     */
    @DeleteMapping("/delete/{id}")
    public Result<String> deleteCollectItems(@PathVariable("id") Long id) {
        log.info("删除的失物招领信息ID：{}", id);
        collectItemsService.deleteCollectItems(id);
        return Result.success(BaseMessage.DELETE_SUCCESS);
    }

    /**
     * 修改失物招领信息状态
     * @param id
     * @param status
     * @return
     */
    @GetMapping("/updateStatus")
    public Result<String> updateStatus(Long id, Long status) {
        log.info("修改ID为 {} 的失物招领信息状态为：{}", id,status);
        collectItemsService.updateStatus(id, status);
        return Result.success(BaseMessage.UPDATE_SUCCESS);
    }

}
